vbs模拟键盘和鼠标输入

您所在的位置:网站首页 vbs 语法 vbs模拟键盘和鼠标输入

vbs模拟键盘和鼠标输入

2023-09-28 18:22| 来源: 网络整理| 查看: 265

在很多时候下,我们通常需要脚本帮助我们测试一些代码,或者用脚本替代一些重复化的工作。然而用python或者java甚至C++,都太耗时间了,写的脚本很长,还需要调试。这导致我们需要用一种更加简便的编程方式来模拟一些键盘或鼠标的输入。

VBS模拟键盘的输入(大全)

Set objShell = CreateObject(“Wscript.Shell”) do WScript.Sleep 500 objShell.SendKeys “{F2}” loop

这里是一个简单的例子,创建对象后使用SendKeys向目前正在使用的应用程序发送一个字符 例:

Set objShell = CreateObject(“Wscript.Shell”) WScript.Sleep 500 objShell.SendKeys “a”

这里的代码意思就是发送字符‘a’。 前面的WScript.Sleep 500代码表停顿500毫秒,(1000毫秒=1秒),通常我们通过调整停顿时间控制速度。这是因为应用程序正常是无法接受不断发送的字符的,其间隔时间太短,应用程序反应不过来。

这里介绍一下vbs里的循环 for i=0 to 100 //需要执行的代码 next 这是一个简单的100次循环,所以我们可以利用这一循环循环向应用程序发送指定字符

例: Set WshShell= WScript.Createobject(“WScript.Shell”) for i=1 to 100 WScript.Sleep 500 WshShell.SendKeys"^v" WshShell.SendKeys i WshShell.SendKeys “%s” next

这是一个qq刷屏代码,就是利用循环与模拟输入实现的 qq刷屏具体请看我的另外一篇文章:

qq刷屏代码 https://blog.csdn.net/qq_42662283/article/details/85868901

到这里有同学就会问如果需要输入Ctrl+a或Enter怎么办,不急,下面就是特殊字符输入方法:

空格键 " " 退格键 {BACKSPACE} 或 {BS} 或 {BKSP} BREAK {BREAK} Delete {Delete} 或 {DEL} 向下键 {DOWN} 向上键 {UP} 向左键 {LEFT} 向右键 {RIGHT} END {END} ENTER {ENTER} 或 ~ ESC {ESC} TAB {TAB} CAPS LOCK {CAPSLOCK} HELP {HELP} HOME {HOME} Insert {Insert} 或 {INS} NUM LOCK {NUMLOCK} PAGE DOWN {PGDN} PAGE UP {PGUP} PRINT SCREEN {PRTSC} SCROLL LOCK {SCROLLLOCK}

F1 {F1} F2 {F2} F3 {F3} F4 {F4} F5 {F5} F6 {F6} F7 {F7} F8 {F8} F9 {F9} F10 {F10} F11 {F11} F12 {F12}

以上两个表是一些没有字符输出的特殊字符的发送方法, 以上表格中左边是这个特殊键的名字,大括号内是我们需要写在代码里的(注意:写代码的时候记住要加大括号)

例:WshShell.SendKeys “{ENTER}” //输出enter键 例:WshShell.SendKeys “ “ //输出空格键

当我们需要组合两个键的时候,我们有特殊表示Ctrl,Alt,Shift的方法 SHIFT + CTRL ^ ALT % 例:WshShell.SendKeys"^v"//发送Ctrl+v

最后备注一下,如果我们要输入一个字符串,没有必要一个一个字符发送,直接发送字符串就行了 例:WshShell.SendKeys"12345678"

VBS模拟鼠标输入

vbs的鼠标模拟要稍微麻烦一点,这里直接给出代码,看注释 如果有不理解的可以在评论区提问

Set mouse=New SetMouse 'mouse.getpos x,y ''获得鼠标当前位置坐标 'MsgBox x & "," & y mouse.move 148,154 '把鼠标移动到坐标 WScript.Sleep 200 mouse.clik "DBCLICK" '左击 '"LEFT" 左击 '"RIGHT" 右击 '"MIDDLE" 中击 '"DBCLICK" 左双击 Class SetMouse private S private xls, wbk, module1 private reg_key, xls_code, x, y Private Sub Class_Initialize() Set xls = CreateObject("Excel.Application") Set S = CreateObject("wscript.Shell") 'vbs 完全控制excel reg_key = "HKEY_CURRENT_USER\Software\Microsoft\Office\$\Excel\Security\AccessVBOM" reg_key = Replace(reg_key, "$", xls.Version) S.RegWrite reg_key, 1, "REG_DWORD" 'model 代码 xls_code = _ "Private Type POINTAPI : X As Long : Y As Long : End Type" & vbCrLf & _ "Private Declare Function SetCursorPos Lib ""user32"" (ByVal x As Long, ByVal y As Long) As Long" & vbCrLf & _ "Private Declare Function GetCursorPos Lib ""user32"" (lpPoint As POINTAPI) As Long" & vbCrLf & _ "Private Declare Sub mouse_event Lib ""user32"" Alias ""mouse_event"" " _ & "(ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)" & vbCrLf & _ "Public Function getx() As Long" & vbCrLf & _ "Dim pt As POINTAPI : GetCursorPos pt : getx = pt.X" & vbCrLf & _ "End Function" & vbCrLf & _ "Public Function gety() As Long" & vbCrLf & _ "Dim pt As POINTAPI: GetCursorPos pt : gety = pt.Y" & vbCrLf & _ "End Function" Set wbk = xls.Workbooks.Add Set module1 = wbk.VBProject.VBComponents.Add(1) module1.CodeModule.AddFromString xls_code End Sub '关闭 Private Sub Class_Terminate xls.DisplayAlerts = False wbk.Close xls.Quit End Sub '可调用过程 Public Sub getpos( x, y) x = xls.Run("getx") y = xls.Run("gety") End Sub Public Sub move(x,y) xls.Run "SetCursorPos", x, y End Sub Public Sub clik(keydown) Select Case UCase(keydown) Case "LEFT" xls.Run "mouse_event", &H2 + &H4, 0, 0, 0, 0 Case "RIGHT" xls.Run "mouse_event", &H8 + &H10, 0, 0, 0, 0 Case "MIDDLE" xls.Run "mouse_event", &H20 + &H40, 0, 0, 0, 0 Case "DBCLICK" xls.Run "mouse_event", &H2 + &H4, 0, 0, 0, 0 xls.Run "mouse_event", &H2 + &H4, 0, 0, 0, 0 End Select End Sub End Class

写码不易,如果觉得从文章里学到一些知识,点赞关注收藏一下呗,为小编鼓励一下,谢谢各位!!!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3